A local area network (LAN) is a computer network that interconnects computers within a limited area such a data center, using network media. A LAN includes at least one spine high-capacity Top-of-Rack (TOR) switch, some number of leaf (TOR or embedded) switches, each linked to the spine switches, and each of the leaf switches linked directly to some number of host (servers) devices. In this type of topology, each of the switches in the LAN operate to process and transmit data frames they receive from neighboring LAN devices, and each switch in the LAN builds and maintains a layer-2 (L2) forwarding table that is comprised of MAC address information learned from frames they receive from neighboring LAN devices and the receiving port.
Generally, devices in a network, such as a switch, operate to receive a data frame at an ingress port, process the data frame to determine the destination port that the frame should be sent to (if the switch is not itself the destination) and then send the data frame out an egress port to its intended destination. After the data frame arrives at an ingress port, the switch can examine, among other things, the header in the data frame for information that identifies the destination device to which the data frame is to be sent. This destination information can be the destination MAC address and/or IP address of a host device linked to a switch port, or it can be address information associated with some other device in the network. Each network switch then can use this address information to determine how to forward data frame in the network.
In order for spine and leaf devices to transmit data frames received from any of the other devices in the network to their intended destination, it is necessary for each of these devices to build and maintain a forwarding table that can include MAC address information assigned to each of the host devices comprising the network, or at least address information associated with the destination host devices to which data frames are sent. This address information can be learned using well know network address learning techniques, such as MAC learning.
Ethernet networks have become ubiquitous and are growing in popularity and usage, especially in the Data Center (DC) environment. This popularity is driving the large scale adaptation of Ethernet technology which, in turn, is driving down the cost and increasing the speed at which these networks operate. With the large scale adaptation of Ethernet technology, the number of network devices comprising an Ethernet network is increasing. In addition to the increasingly more numerous physical devices connected to a network, each physical device can be configured to support a number of virtual devices or machines (VM) that operate in conjunction with one or more of the hosts. Each VM can be assigned a unique MAC address, which, depending upon the number of virtual machines in a local network, can result in a large number of MAC addresses being maintained in the forwarding tables of frame switches that are aware of some or all of the virtual machines. It is noteworthy to mention that designing switches with large L2 MAC table capacity increases the cost of the switch and can also increase the power consumption of such switches.
Typically, the frames entering a switch are processed by functionality that has access to a limited amount of on-chip memory on which to store forwarding table information. The requirement to increase the size of these forwarding tables to accommodate a flat MAC addressing scheme becomes untenable even for the high end switches available in the market. As a consequence of building and maintaining flat forwarding tables in the data plane of a network switch, switches typically learn the MAC addresses of all the nodes in the network that they can reach.
But, current MAC learning techniques can result in a network switch storing a very large amount of address information in their forwarding table memory. That is, the forwarding table in a switch can, at any point in time, store one entry for each of the MAC addresses of the devices (physical and/or virtual) that it can communicate with. So, by way of example, in a network including forty two servers per rack, and with each server configured to support twenty VMs, there are over eight hundred addresses per rack. If the network has two hundred such racks, then the total number of MAC addresses that can be learned is very large. However, not all of the address information stored in a forwarding table may be needed by the switch to support the forwarding of data frames from one host device to another host device in the network or to the network core.
One technique that is used to limit the number of addresses that are learned and stored is to remove those addresses from a forwarding table that have not been accessed for some specified period of time. This technique for limiting the number of currently stored addresses can result in storing a number of learned addresses which is much beyond the capacity of most switch memory dedicated for storing forwarding table information. Another approach may be to have switches that are connected directly to host devices in a local network not learn the MAC address of every host device with which it can communicate. This approach, though, does not limit the number of MAC addresses learned from uplink ports and does not provide a good solution for asymmetric data flows. Also this solution needs to configure a timeout period for core facing ports (CFPs) that is shorter than the period configured on non-CFPs, in order to limit the number of MAC addresses stored in association with the CFPs on TORs linked to host devices.